package com.newlink.building.userinfo.mvp.contract

import com.newlink.building.common_base.base.IModel
import com.newlink.building.common_base.base.IPresenter
import com.newlink.building.common_base.base.IView
import com.newlink.building.common_base.model.bean.*
import io.reactivex.Observable


interface Module_UserInfo_AuthFaceContract {

    interface Model : IModel {
        fun getFaceData(request: LoadFaceListDataRequest): Observable<HttpResult<FaceListData>>
        fun removeFaceData(request: DeleteFaceDataRequest): Observable<HttpResult<StatusData>>
        fun uploadFaceData(request: UploadFaceDataRequest): Observable<HttpResult<StatusData>>
        fun checkFaceValid(token: String, mBase64: String): Observable<HttpResult<Boolean>>
    }

    interface View : IView {
        fun onUploadFaceDataSuccess()
        fun onUploadFaceDataFailed(msg: String?)
        fun onDeleteFaceDataSuccess()
        fun onDeleteFaceDataFailed()
        fun onFaceListDataSuccess(data: MutableList<AuthResponseBody>?)
        fun onCheckFaceValidSuccess()
        fun onCheckFaceValidFail()
    }

    interface Presenter : IPresenter<View> {

        fun getFaceData(request: LoadFaceListDataRequest)
        fun removeFaceData(request: DeleteFaceDataRequest)
        fun uploadFaceData(request: UploadFaceDataRequest)
        fun checkFaceValid(token: String, mBase64: String)

    }
}